#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimerEvent>
#include <QTimer>
#include <QDebug>
#include <QMouseEvent>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    tId1 = startTimer(1000);//每一千毫毫秒调用一次timerEvent事件
    tId2 = startTimer(2000);//每一千毫毫秒调用一次timerEvent事件

//    定时器第二种方式
    QTimer * timer1 = new QTimer(this);
    timer1->start(500);//毫秒做单位
    //每隔0.5秒发送信号
    static int num = 0;
    connect(timer1,&QTimer::timeout,[=](){
        ui->label_4->setText(QString::number(num++));
    });
    //点击按钮, 暂停定时器
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        timer1->stop();
    });
    //给ui->label做事件过滤器 拦截
    ui->label->installEventFilter(this);//通过父窗口给ui label安装过滤器
    //步骤2 重写eventFilter

}
bool MainWindow::eventFilter(QObject *obj, QEvent *ev)
{
    if(obj == ui->label){
        if(ev->type() == QEvent::MouseButtonPress){
            QMouseEvent * e = static_cast<QMouseEvent *>(ev);
            qDebug()<< QString("事件过滤器 x=%1 , y =%2").arg(e->x()).arg(e->y());
        return true;
       }
    }
    //其他父类处理
    return QWidget::eventFilter(obj,ev);
}
void MainWindow::timerEvent(QTimerEvent *ev)
{
    static int num1 =0 ;
    static int num2=0;
    if(ev->timerId()==tId1){
        ui->label_2->setText(QString::number(num1++));
    }
    if(ev->timerId()==tId2){
        ui->label_3->setText(QString::number(num2++));
    }
}



MainWindow::~MainWindow()
{
    delete ui;
}
